package com.xianyuwangyou.taizhangdengji

import android.content.Context
import android.util.Log
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import java.io.InputStreamReader
import java.io.OutputStreamWriter

class AppInitializer {
    private val TAG = "AppInitializer"
    
    fun initializeAppData(context: Context) {
        // 初始化配置数据
        initializeConfigData(context)
        
        // 初始化账户数据
        initializeAccountData(context)
    }
    
    private fun initializeConfigData(context: Context) {
        try {
            // 检查内部存储中是否已存在配置文件
            context.openFileInput("config.json").use { 
                Log.d(TAG, "配置文件已存在，无需初始化")
                return
            }
        } catch (e: Exception) {
            // 文件不存在，需要从assets复制
            Log.d(TAG, "配置文件不存在，从assets复制")
        }
        
        try {
            // 从assets读取配置数据
            val inputStream = context.assets.open("config.json")
            val reader = InputStreamReader(inputStream)
            val gson = Gson()
            val configData = gson.fromJson(reader, ConfigData::class.java)
            reader.close()
            
            // 保存到内部存储
            val json = gson.toJson(configData)
            val outputStream = context.openFileOutput("config.json", Context.MODE_PRIVATE)
            val writer = OutputStreamWriter(outputStream)
            writer.write(json)
            writer.close()
            
            Log.d(TAG, "配置数据初始化完成")
        } catch (e: Exception) {
            Log.e(TAG, "初始化配置数据失败", e)
        }
    }
    
    private fun initializeAccountData(context: Context) {
        try {
            // 检查内部存储中是否已存在账户数据文件
            context.openFileInput("account_data.json").use { 
                Log.d(TAG, "账户数据文件已存在，无需初始化")
                return
            }
        } catch (e: Exception) {
            // 文件不存在，需要从assets复制
            Log.d(TAG, "账户数据文件不存在，从assets复制")
        }
        
        try {
            // 从assets读取账户数据
            val inputStream = context.assets.open("account_data.json")
            val reader = InputStreamReader(inputStream)
            val gson = Gson()
            val listType = object : TypeToken<List<AccountRecord>>() {}.type
            val accountRecords = gson.fromJson<List<AccountRecord>>(reader, listType)
            reader.close()
            
            // 保存到内部存储
            val json = gson.toJson(accountRecords)
            val outputStream = context.openFileOutput("account_data.json", Context.MODE_PRIVATE)
            val writer = OutputStreamWriter(outputStream)
            writer.write(json)
            writer.close()
            
            Log.d(TAG, "账户数据初始化完成，共 ${accountRecords?.size ?: 0} 条记录")
        } catch (e: Exception) {
            Log.e(TAG, "初始化账户数据失败", e)
        }
    }
}